package com.fangfang.home.adapter;

import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentStatePagerAdapter;
import com.common.base.fragment.BaseFragment;
import java.util.List;

/**
 * 知识点:
 * 1:FragmentStatePagerAdapter与FragmentPagerAdapter全部继承自PagerAdapter
 * 2:FragmentStatePagerAdapter与FragmentPagerAdapter全部继承自PagerAdapter生成的Fragment都将保存在内存中，
 *   所以缺点非常明显，对于存在相对较多的fragment，程序将会吃掉非常多的内存，FragmentPagerAdapter适合那些相数量相对较少的
 *   静态的页面。对于存在多个fragment的情况，一般推荐使用FragmentStatePagerAdapter
 */
public class HomeAdapter extends FragmentStatePagerAdapter {

    private List<BaseFragment> fragments;

    public HomeAdapter(List<BaseFragment> fragmentList, FragmentManager fm) {
        super(fm);
        if (fragmentList != null){
            fragments = fragmentList;
        }
    }

    /**
     * 生成我们需要的fragment，交给相关联的Activity
     *  Fragment fragment = new Fragment();
     *  Bundle bundle = new Bundle();
     *  bundle.putString("position", "" + position);
     *  fragment.setArguments(bundle);
     * @param position
     * @return
     */
    @Override
    public Fragment getItem(int position) {
        return fragments != null ? fragments.get(position) : null;
    }

    /**
     * 返回数组列表包含的项目数
     * @return
     */
    @Override
    public int getCount() {
        return fragments != null ? fragments.size() : 0;
    }
}
